home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / IDLIncludes / DeskBus.idl < prev    next >
Text File  |  1996-05-01  |  3KB  |  82 lines

  1. /*
  2.      File:        DeskBus.idl
  3.  
  4.      Contains:    Apple Desktop Bus (ADB) Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __DESKBUS_IDL__
  19. #define __DESKBUS_IDL__
  20.  
  21. #include <somobj.idl>
  22. #include <somcls.idl>
  23.  
  24. #ifndef __TYPES_IDL__
  25. #include <Types.idl>
  26. #endif
  27. #ifndef __MIXEDMODE_IDL__
  28. #include <MixedMode.idl>
  29. #endif
  30.  
  31. #ifdef __SOMIDL__
  32.  
  33. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  34. typedef SInt8                    ADBAddress;
  35.  
  36. typedef OpaquePtr ADBCompletionProcPtr;
  37. typedef OpaquePtr ADBCompletionUPP;
  38. typedef OpaquePtr ADBDeviceDriverProcPtr;
  39. typedef OpaquePtr ADBDeviceDriverUPP;
  40. typedef OpaquePtr ADBServiceRoutineProcPtr;
  41. typedef OpaquePtr ADBServiceRoutineUPP;
  42. typedef OpaquePtr ADBInitProcPtr;
  43. typedef OpaquePtr ADBInitUPP;
  44. typedef SOMLargeStruct            ADBDataBlock;                /* Derived from a struct of 10 bytes in size */
  45.  
  46. typedef OpaquePtr                ADBDBlkPtr;                    /* Substituted OpaquePtr for ``ADBDataBlock*'' */
  47.  
  48. typedef SOMLargeStruct            ADBSetInfoBlock;            /* Derived from a struct of 8 bytes in size */
  49.  
  50. typedef OpaquePtr                ADBSInfoPtr;                /* Substituted OpaquePtr for ``ADBSetInfoBlock*'' */
  51.  
  52. /* ADBOpBlock is only used when calling ADBOp from 68k assembly code */
  53. typedef SOMLargeStruct            ADBOpBlock;                    /* Derived from a struct of 12 bytes in size */
  54.  
  55. typedef OpaquePtr                ADBOpBPtr;                    /* Substituted OpaquePtr for ``ADBOpBlock*'' */
  56.  
  57. /*
  58.     ADBOp has a different interface for 68k assembly than for everything else
  59.     for 68k assembly the interface is 
  60.     #pragma parameter __D0 ADBOp(__A0,__D0)
  61.     OSErr ADBOp( ADBOpBlock * pb, short commandNum );
  62. */
  63. /*
  64.     IMPORTANT NOTE:
  65.     "Inside Macintosh: Devices" documents the completion routine for ADBOp will be called with
  66.     four parameters using 68k register based calling conventions, specifically the completion routine
  67.     passed in should be of type ADBServiceRoutineProcPtr. However, when upp types were first added
  68.     to this interface file, the type ADBCompletionUPP was mistakenly used for the second parameter
  69.     to ADBOp. Since applications have shipped using completion routines of type ADBCompletionUPP,
  70.     the mistake cannot be corrected.
  71.     The only difference between ADBServiceRoutineUPP and ADBCompletionUPP is the former takes an extra
  72.     argument which is a pointer to itself, fortunately not needed for PowerPC code.
  73.     For compatibility with existing 68k code, when an ADBOp completion routine is called,
  74.     68k register A1 will point to the completion routine, as documented in Inside Mac.
  75. */
  76. #endif
  77.  
  78. #endif /* __SOMIDL__ */
  79.  
  80. #endif /* __DESKBUS_IDL__ */
  81.  
  82.